package com.su.kddq.service.user.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.su.kddq.entity.user.ApplyCourier;
import com.su.kddq.mapper.user.ApplyCourierMapper;
import com.su.kddq.service.user.ApplyCourierService;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.util.Date;

import static com.su.kddq.constant.OrderStateConstant.APPLY_COURIER_STATUS_FAIL;
import static com.su.kddq.constant.OrderStateConstant.APPLY_COURIER_STATUS_IN;

/**
 * @author sx
 */
@Service
public class ApplyCourierServiceImpl extends ServiceImpl<ApplyCourierMapper, ApplyCourier> implements ApplyCourierService {

    @Override
    public boolean applyCourier(ApplyCourier applyCourier) {
        ApplyCourier oldApplyCourier = this.getOne(new QueryWrapper<ApplyCourier>().eq("uid", applyCourier.getUid()).eq("status", APPLY_COURIER_STATUS_FAIL));
        if (!StringUtils.isEmpty(oldApplyCourier)) {
            applyCourier.setCreateTime(new Date());
            applyCourier.setUpdateTime(new Date());
            //审核状态
            applyCourier.setStatus(APPLY_COURIER_STATUS_IN);
            this.removeById(oldApplyCourier.getId());
            return this.save(applyCourier);
        } else {
            ApplyCourier courier = this.getOne(new QueryWrapper<ApplyCourier>().eq("uid", applyCourier.getUid()));
            if (StringUtils.isEmpty(courier)) {
                applyCourier.setCreateTime(new Date());
                applyCourier.setUpdateTime(new Date());
                //审核状态
                applyCourier.setStatus(APPLY_COURIER_STATUS_IN);
                return this.save(applyCourier);
            } else {
                return false;
            }
        }

    }

    @Override
    public ApplyCourier getApplyInfo(String id) {
        ApplyCourier applyCourier = this.getOne(new QueryWrapper<ApplyCourier>().eq("uid", id));
        return !StringUtils.isEmpty(applyCourier) ? applyCourier : null;
    }
}
